package com.wzw.basics.reflection;

import java.lang.reflect.Field;
import java.lang.reflect.Type;

/**
 * @author Wangzhiwen
 */
public class FieldApi {

    public static void main(String[] args) {
        /*
         * 常用方法
         */
        Class<DemoFiled> demoFiledClass = DemoFiled.class;
        Field[] declaredFields = demoFiledClass.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            // 获取字段的名称。
            String name = declaredField.getName();

            // 获取字段类型所属的Class对象
            Class<?> type = declaredField.getType();

            // 获取字段的类型，如果字段是泛型类型的，会返回泛型类型的详细信息；如果字段不是泛型类型的，和getType返回的结果是一样的。
            Type genericType = declaredField.getGenericType();

            // 获取这个字段是在哪个类中声明的，也就是当前字段所属的类
            Class<?> declaringClass = declaredField.getDeclaringClass();
        }
    }

}

class DemoFiled extends DemoFiledExt{

    public static String address;

    public String name;

    private String age;

}

class DemoFiledExt {

    public static String addressExt;

    public String nameExt;

    private String ageExt;

}
